SQL Örnekleri
Merhabalar.
SQL üzerinde temel sorguları çalıştırmak adına çeşitli örnekleri not almıştım. Bunlar bir çok basit ve gelişmiş sorguları çalıştırmanıza yardımcı olan örneklerdir. Şöyle ki, bir diyagram var. Diyagrama göre de sorulmuş 7 adet soru var. Bu sorular diyagrama bakılarak yapılmıştır.
Bu konuda kendinizi geliştirebilmeniz adına karşınıza çıkabilecek gündelik hayattan güzel örneklerdir.
Not: Soruların cevapları bizzat tarafımdan yapılmıştır. Alttaki 7 soru diyagrama göredir.
SQL Örnekleri
Örnek-1:
Maaşı 2000 TL’den büyük, 01.01.1970 tarihinden sonra doğmuş ve Türk olan personelin adı, soyadı, departmanı ve ülke id’lerini ekranda gösteren sorguyu yazınız.
Cevap-1:
SELECT
personel.ad as ‘Personel Adı’,
personel.soyad,
departman.ad as ‘Departman Adı’,
ulke.id as ‘Ülke ID’
FROM
personel, departman, ulke
WHERE
personel.maas>2000 AND
personel.dogum>’01/01/1970’ AND
ulke.ad=’Türkiye’ AND
departman.id=personel.departman_id AND
personel.ulke_id=ulke.id
Örnek-2:
Işyerleri Ankara’da olan müşterilerin adı-soyadı, çalıştıkları firma adları ve o müşterilerin toplam verdiği sipariş sayılarını listeleyecek sorguyu oluşturunuz.
Cevap-2:
SELECT
musteri.ad, musteri.soyad, firma.ad, COUNT (siparis_baslik.id) AS ‘Toplam Sipariş’,
FROM
musteri, firma, sipariş_baslik
WHERE
firma.adres=’Ankara’
AND
firma.id=musteri.firma_Id,
AND
siparis_baslik.musteri_id=musteri.id
GROUP BY
musteri.ad,
musteri.soyad,
firma.ad
Örnek-3:
Pazarlama departmanında çalışan ve ismi A harfi ile başlayan personellerin ad, soyad ve departman adlarını ekrana yazdıran sorgu nedir?
Cevap-3:
SELECT
departman.ad, personel.ad, personel.soyad
FROM
departman, personel
WHERE
personel.ad LIKE ’A%’
AND
departman.ad=’Pazarlama’,
AND
personel.departman_id=departman.id
Örnek-4:
Türk müşterilerin toplam kaç adet sipariş verdiklerini bulmak istiyoruz. Ekran çıktısında ülke adı ve toplam verilen sipariş sayısı olacak şekilde sorguyu oluşturunuz.
Cevap-4:
SELECT
ulke.ad,
COUNT(siparis_kalem.adet) AS ‘Toplam Sipariş’,
FROM
ulke, musteri, siparis_kalem, siparis_baslik,
WHERE
ulke_ad=’Türkiye’ AND
ulke.id=musteri.ulke_id AND
musteri.id=sipariş_baslik.musteri_id AND
siparis_baslik.id=siparis_kalem.siparis_id
GROUP BY
ulke.ad
Örnek-5:
Fiyatı 1000 TL’den küçük olan ürünlerden sipariş eden müşterilerin adı ve soyadını, ayrıca ürünün adını, fiyatını müşterinin soyadına göre sıralayarak gidin.
Cevap-5:
SELECT
musteri.ad, musteri.soyadi, urun.ad, urun_fiyat.fiyat,
FROM
musteri, urun, urun_fiyat, siparis_baslik, siparis_kalem,
WHERE
urun_fiyat.fiyat<1000 AND
musteri.id=siparis_baslik.id AND
siparis_baslik.id=siparis_kalem.siparis_id AND
siparis_kalem.urun_id=urun.id AND
urun.id=urun_fiyat.urun_id
ORDER BY musteri.soyad
Örnek-6:
Fiyatı 800-2000 TL arasında olan ürünlerden sipariş eden müşterilerden Alman vatandaşı olanların adını, soyadını, ayrıca sipariş edilen ürünün adını ve ücretini müşterinin adına göre sıralı getiriniz.
Cevap-6:
SELECT
urun_fiyat.fiyat, musteri.ad, musteri.soyad, musteri.ulke_id, urun.ad
FROM
urun, musteri, urun_fiyat, siparis_baslik, siparis_kalem, ulke
Where urun_fiyat.fiyat BETWEEN 800 AND 2000
AND
musteri.ulke_id=’Almanya’
AND
musteri.id=siparis_baslik.musteri_id AND
siparis_baslik.id=siparis_kalem.siparis_id AND
siparis_kalem.urun_id AND
urun.id=urun_fiyat.id
ORDER BY musteri.ad
Örnek-7:
Müşterilerden, 35 yaşından küçük olanları çalıştığı firmaların adresleriyle bu müşterilerin ad ve soyadlarını, müşteri soyadına göre tersten sıralayarak sorgulattırınız.
Cevap-7:
Select musteri.ad, musteri.soyad, firma.ad, firma.adres
FROM
musteri, firma
WHERE musteri.dogum>’01/01/1978’ AND
musteri.firma_id=firma.id
ORDER BY musteri.soyad DESC
Bu 7 örnek içerisinde sorgular farklı da yazılabilirdi. En basit örnekle, örnek-6’da fiyat koşulunun yazıldığı yere dikkatinizi çekerim. “Fiyatı 800-2000 TL arasında…” diyor. Ben bunu, “Where urun_fiyat.fiyat BETWEEN 800 AND 2000” diye yazmışım. Bu başka şekilde de yazılamaz mı? Tabi ki yazılabilir. Ürün fiyatları urun_fiyat tablosundaki fiyat sütununda tutuluyor.
O halde koşulumu 3 farklı şekilde yazabilirim.
1- WHERE urun_fiyat.fiyat BETWEEN 800 AND 2000
2- WHERE urun_fiyat.fiyat>800 AND urun_fiyat.fiyat<2000
3- WHERE urun_fiyat.fiyat MAX(urun_fiyat.fiyat=800) AND MIN(urun_fiyat.fiyat=2000)”
Bu 3 sorgu da aynı şeyi ifade ediyor.
Konulardaki gelişmiş kavramları öğrenince kısayoldan nasıl gidildiğini de bulabiliyoruz.
Daha farklı soru örnekleri sonradan yayınlayacağım.
Kolay gelsin.
Recep ŞERIT